// utils/getMarkdownFiles.ts
import * as fs from 'fs'; // 使用命名导入
import * as path from 'path'; // 使用命名导入

interface MarkdownFile {
    text: string;
    link: string;
}

interface SidebarGroup {
    text: string;
    collapsible?: boolean;
    collapsed?: boolean;
    items?: (MarkdownFile | SidebarGroup)[];
    link?: string;
}

/**
 * 递归获取指定目录下的 Markdown 文件和子目录，构建 VitePress 侧边栏配置。
 * @param dir - 要扫描的目录路径
 * @param indexName - 要扫描的目录路径
 * @returns 侧边栏组数组
 */
export const getMarkdownFiles = (dir: string, indexName?: string): SidebarGroup[] => {
    const directoryPath = path.resolve(process.cwd(), dir);
    const groups: SidebarGroup[] = [];

    fs.readdirSync(directoryPath).forEach(file => {
        const fullPath = path.join(directoryPath, file);
        if (fs.statSync(fullPath).isDirectory()) {
            // 如果是目录，创建一个新的 SidebarGroup
            const items: (MarkdownFile | SidebarGroup)[] = getMarkdownFiles(fullPath, indexName); // 递归获取子目录

            if (items.length > 0) {
                groups.push({
                    text: file,
                    collapsible: true,
                    collapsed: true,
                    items: items,
                });
            }
        } else if (file.endsWith('.md')) {
            // 如果是 Markdown 文件
            const relativeLink = path.relative(process.cwd(), fullPath).replace(/\\/g, '/'); // 生成相对链接
            if (file === 'index.md') {
                // 如果是 index.md，作为快速开始的链接
                groups.unshift({
                    text: indexName?indexName:'快速开始',
                    link: `/${relativeLink}` // 生成相对链接
                });
            } else {
                // 其他 Markdown 文件
                groups.push({
                    text: file.replace('.md', ''),
                    link: `/${relativeLink}` // 生成相对链接
                });
            }
        }
    });
    return groups;
};